1
線形探索を超えて:関連コンテナの力
AI037Lesson 15
00:00

本が到着順に並んでいない、代わりに ユニバーサルキーによって並べられている図書館を想像してみてください。これは、順次的から 関連コンテナへのパラダイムシフトです。代わりに ベクター を線形にスキャンするのではなく、 マップ または セット を使って対数時間の検索($O(\log n)$)を実現します。

1. 関連の本質

マップでは マップキーと値のペアを保存します。キーは文字列、カスタムオブジェクト、または キーと値のペア厳密な弱順序(Strict Weak Ordering)をサポートする任意の型として機能します。一方、 厳密な弱順序セットは、ユニークなキーのみを保持し、メンバーシップテストやフィルタリングに最適なツールです。 セット逆に、ユニークなキーのみを格納するため、メンバーシップテストやフィルタリングに最適です。

ベクター(順次)セット(関連)[0]"A"[1]"B"[2]"A"(重複)ユニークフィルタキー:"A"キー:"B"

2. オーダード対アンオーダード

標準コンテナ(マップセット)はキーをソート済みに保ちます。 C++11 標準 は、無順序のバリエーション(unordered_map)を導入しました。これらは ハッシュ関数 を使用して平均的に $O(1)$ のパフォーマンスを実現します。これらの高性能バケットを利用する際は、 C++11 ロゴ に注目してください。

main.py
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>